home *** CD-ROM | disk | FTP | other *** search
/ Australian Personal Computer 2002 November / CD 1 / APC0211D1.ISO / workshop / prog / files / ActivePerl-5.6.1.633-MSWin32.msi / _9e8fb9cfa6095b9c1ca3bf484994a02d < prev    next >
Encoding:
Text File  |  2001-10-29  |  24.3 KB  |  857 lines

  1. =head1 NAME
  2.  
  3. perltodo - Perl TO-DO List
  4.  
  5. =head1 DESCRIPTION
  6.  
  7. This is a list of wishes for Perl.  It is maintained by Nathan
  8. Torkington for the Perl porters.  Send updates to
  9. I<perl5-porters@perl.org>.  If you want to work on any of these
  10. projects, be sure to check the perl5-porters archives for past ideas,
  11. flames, and propaganda.  This will save you time and also prevent you
  12. from implementing something that Larry has already vetoed.  One set
  13. of archives may be found at:
  14.  
  15.     http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/
  16.  
  17.  
  18. =head1 Infrastructure
  19.  
  20. =head2 Mailing list archives
  21.  
  22. Chaim suggests contacting egroup and asking them to archive the other
  23. perl.org mailing lists.  Probably not advocacy, but definitely
  24. perl6-porters, etc.
  25.  
  26. =head2 Bug tracking system
  27.  
  28. Richard Foley I<richard@perl.org> is writing one.  We looked at
  29. several, like gnats and the Debian system, but at the time we
  30. investigated them, none met our needs.  Since then, Jitterbug has
  31. matured, and may be worth reinvestigation.
  32.  
  33. The system we've developed is the recipient of perlbug mail, and any
  34. followups it generates from perl5-porters.  New bugs are entered
  35. into a mysql database, and sent on to
  36. perl5-porters with the subject line rewritten to include a "ticket
  37. number" (unique ID for the new bug).  If the incoming message already
  38. had a ticket number in the subject line, then the message is logged
  39. against that bug.  There is a separate email interface (not forwarding
  40. to p5p) that permits porters to claim, categorize, and close tickets.
  41.  
  42. There is also a web interface to the system at http://bugs.perl.org.
  43.  
  44. The current delay in implementation is caused by perl.org lockups.
  45. One suspect is the mail handling system, possibly going into loops.
  46.  
  47. We still desperately need a bugmaster, someone who will look at
  48. every new "bug" and kill those that we already know about, those
  49. that are not bugs at all, etc.
  50.  
  51. =head2 Regression Tests
  52.  
  53. The test suite for Perl serves two needs: ensuring features work, and
  54. ensuring old bugs have not been reintroduced.  Both need work.
  55.  
  56. Brent LaVelle (lavelle@metronet.com) has stepped forward to work on
  57. performance tests and improving the size of the test suite.
  58.  
  59. =over 4
  60.  
  61. =item Coverage
  62.  
  63. Do the tests that come with Perl exercise every line (or every block,
  64. or ...)  of the Perl interpreter, and if not then how can we make them
  65. do so?
  66.  
  67. =item Regression
  68.  
  69. No bug fixes should be made without a corresponding testsuite addition.
  70. This needs a dedicated enforcer, as the current pumpking is either too
  71. lazy or too stupid or both and lets enforcement wander all over the
  72. map.  :-)
  73.  
  74. =item __DIE__
  75.  
  76. Tests that fail need to be of a form that can be readily mailed
  77. to perlbug and diagnosed with minimal back-and-forth's to determine
  78. which test failed, due to what cause, etc.
  79.  
  80. =item suidperl
  81.  
  82. We need regression/sanity tests for suidperl
  83.  
  84. =item The 25% slowdown from perl4 to perl5
  85.  
  86. This value may or may not be accurate, but it certainly is
  87. eye-catching.  For some things perl5 is faster than perl4, but often
  88. the reliability and extensibility have come at a cost of speed.  The
  89. benchmark suite that Gisle released earlier has been hailed as both a
  90. fantastic solution and as a source of entirely meaningless figures.
  91. Do we need to test "real applications"?  Can you do so?  Anyone have
  92. machines to dedicate to the task?  Identify the things that have grown
  93. slower, and see if there's a way to make them faster.
  94.  
  95. =back
  96.  
  97. =head1 Configure
  98.  
  99. Andy Dougherty maintain(ed|s) a list of "todo" items for the configure
  100. that comes with Perl.  See Porting/pumpkin.pod in the latest
  101. source release.
  102.  
  103. =head2 Install HTML
  104.  
  105. Have "make install" give you the option to install HTML as well.  This
  106. would be part of Configure.  Andy Wardley (certified Perl studmuffin)
  107. will look into the current problems of HTML installation--is
  108. 'installhtml' preventing this from happening cleanly, or is pod2html
  109. the problem?  If the latter, Brad Appleton's pod work may fix the
  110. problem for free.
  111.  
  112. =head1 Perl Language
  113.  
  114. =head2 64-bit Perl
  115.  
  116. Verify complete 64 bit support so that the value of sysseek, or C<-s>, or
  117. stat(), or tell can fit into a perl number without losing precision.
  118. Work with the perl-64bit mailing list on perl.org.
  119.  
  120. =head2 Prototypes
  121.  
  122. =over 4
  123.  
  124. =item Named prototypes
  125.  
  126. Add proper named prototypes that actually work usefully.
  127.  
  128. =item Indirect objects
  129.  
  130. Fix prototype bug that forgets indirect objects.
  131.  
  132. =item Method calls
  133.  
  134. Prototypes for method calls.
  135.  
  136. =item Context
  137.  
  138. Return context prototype declarations.
  139.  
  140. =item Scoped subs
  141.  
  142. lexically-scoped subs, e.g. my sub
  143.  
  144. =back
  145.  
  146. =head1 Perl Internals
  147.  
  148. =head2 magic_setisa
  149.  
  150. C<magic_setisa> should be made to update %FIELDS [???]
  151.  
  152. =head2 Garbage Collection
  153.  
  154. There was talk of a mark-and-sweep garbage collector at TPC2, but the
  155. (to users) unpredictable nature of its behaviour put some off.
  156. Sarathy, I believe, did the work.  Here's what he has to say:
  157.  
  158. Yeah, I hope to implement it someday too.  The points that were
  159. raised in TPC2 were all to do with calling DESTROY() methods, but
  160. I think we can accommodate that by extending bless() to stash
  161. extra information for objects so we track their lifetime accurately
  162. for those that want their DESTROY() to be predictable (this will be
  163. a speed hit, naturally, and will therefore be optional, naturally. :)
  164.  
  165. [N.B. Don't even ask me about this now!  When I have the time to
  166. write a cogent summary, I'll post it.]
  167.  
  168. =head2 Reliable signals
  169.  
  170. Sarathy and Dan Sugalski are working on this.  Chip posted a patch
  171. earlier, but it was not accepted into 5.005.  The issue is tricky,
  172. because it has the potential to greatly slow down the core.
  173.  
  174. There are at least three things to consider:
  175.  
  176. =over 4
  177.  
  178. =item Alternate runops() for signal despatch
  179.  
  180. Sarathy and Dan are discussed this on perl5-porters.
  181.  
  182. =item Figure out how to die() in delayed sighandler
  183.  
  184. =item Add tests for Thread::Signal
  185.  
  186. =item Automatic tests against CPAN
  187.  
  188. Is there some way to automatically build all/most of CPAN with
  189. the new Perl and check that the modules there pass all the tests?
  190.  
  191. =back
  192.  
  193. =head2 Interpolated regex performance bugs
  194.  
  195.   while (<>) {
  196.     $found = 0;
  197.     foreach $pat (@patterns) {
  198.       $found++ if /$pat/o;
  199.     }
  200.     print if $found;
  201.   }
  202.  
  203. The qr// syntax added in 5.005 has solved this problem, but
  204. it needs more thorough documentation.
  205.  
  206. =head2 Memory leaks from failed eval/regcomp
  207.  
  208. The only known memory leaks in Perl are in failed code or regexp
  209. compilation.  Fix this.  Hugo Van Der Sanden will attempt this but
  210. won't have tuits until January 1999.
  211.  
  212. =head2 Make XS easier to use
  213.  
  214. There was interest in SWIG from porters, but nothing has happened
  215. lately.
  216.  
  217. =head2 Make embedded Perl easier to use
  218.  
  219. This is probably difficult for the same reasons that "XS For Dummies"
  220. will be difficult.
  221.  
  222. =head2 Namespace cleanup
  223.  
  224.     CPP-space:    restrict CPP symbols exported from headers
  225.     header-space: move into CORE/perl/
  226.     API-space:    begin list of things that constitute public api
  227.     env-space:    Configure should use PERL_CONFIG instead of CONFIG etc.
  228.  
  229. =head2 MULTIPLICITY
  230.  
  231. Complete work on safe recursive interpreters C<Perl-E<gt>new()>.
  232. Sarathy says that a reference implementation exists.
  233.  
  234. =head2 MacPerl
  235.  
  236. Chris Nandor and Matthias Neeracher are working on better integrating
  237. MacPerl into the Perl distribution.
  238.  
  239. =head1 Documentation
  240.  
  241. There's a lot of documentation that comes with Perl.  The quantity of
  242. documentation makes it difficult for users to know which section of
  243. which manpage to read in order to solve their problem.  Tom
  244. Christiansen has done much of the documentation work in the past.
  245.  
  246. =head2 A clear division into tutorial and reference
  247.  
  248. Some manpages (e.g., perltoot and perlreftut) clearly set out to
  249. educate the reader about a subject.  Other manpages (e.g., perlsub)
  250. are references for which there is no tutorial, or are references with
  251. a slight tutorial bent.  If things are either tutorial or reference,
  252. then the reader knows which manpage to read to learn about a subject,
  253. and which manpage to read to learn all about an aspect of that
  254. subject.  Part of the solution to this is:
  255.  
  256. =head2 Remove the artificial distinction between operators and functions
  257.  
  258. History shows us that users, and often porters, aren't clear on the
  259. operator-function distinction.  The present split in reference
  260. material between perlfunc and perlop hinders user navigation.  Given
  261. that perlfunc is by far the larger of the two, move operator reference
  262. into perlfunc.
  263.  
  264. =head2 More tutorials
  265.  
  266. More documents of a tutorial nature could help.  Here are some
  267. candidates:
  268.  
  269. =over 4
  270.  
  271. =item Regular expressions
  272.  
  273. Robin Berjon (r.berjon@ltconsulting.net) has volunteered.
  274.  
  275. =item I/O
  276.  
  277. Mark-Jason Dominus (mjd@plover.com) has an outline for perliotut.
  278.  
  279. =item pack/unpack
  280.  
  281. This is badly needed.  There has been some discussion on the
  282. subject on perl5-porters.
  283.  
  284. =item Debugging
  285.  
  286. Ronald Kimball (rjk@linguist.dartmouth.edu) has volunteered.
  287.  
  288. =back
  289.  
  290. =head2 Include a search tool
  291.  
  292. perldoc should be able to 'grep' fulltext indices of installed POD
  293. files.  This would let people say:
  294.  
  295.   perldoc -find printing numbers with commas
  296.  
  297. and get back the perlfaq entry on 'commify'.
  298.  
  299. This solution, however, requires documentation to contain the keywords
  300. the user is searching for.  Even when the users know what they're
  301. looking for, often they can't spell it.
  302.  
  303. =head2 Include a locate tool
  304.  
  305. perldoc should be able to help people find the manpages on a
  306. particular high-level subject:
  307.  
  308.   perldoc -find web
  309.  
  310. would tell them manpages, web pages, and books with material on web
  311. programming.  Similarly C<perldoc -find databases>, C<perldoc -find
  312. references> and so on.
  313.  
  314. We need something in the vicinity of:
  315.  
  316.   % perl -help random stuff
  317.   No documentation for perl function `random stuff' found
  318.   The following entry in perlfunc.pod matches /random/a:
  319.     =item rand EXPR
  320.  
  321.     =item rand
  322.  
  323.     Returns a random fractional number greater than or equal to C<0> and less
  324.     than the value of EXPR.  (EXPR should be positive.)  If EXPR is
  325.     omitted, the value C<1> is used.  Automatically calls C<srand()> unless
  326.     C<srand()> has already been called.  See also C<srand()>.
  327.  
  328.     (Note: If your rand function consistently returns numbers that are too
  329.     large or too small, then your version of Perl was probably compiled
  330.     with the wrong number of RANDBITS.)
  331.   The following pod pages seem to have /stuff/a:
  332.     perlfunc.pod    (7 hits)
  333.     perlfaq7.pod    (6 hits)
  334.     perlmod.pod        (4 hits)
  335.     perlsyn.pod        (3 hits)
  336.     perlfaq8.pod    (2 hits)
  337.     perlipc.pod        (2 hits)
  338.     perl5004delta.pod    (1 hit)
  339.     perl5005delta.pod    (1 hit)
  340.     perlcall.pod    (1 hit)
  341.     perldelta.pod    (1 hit)
  342.     perlfaq3.pod    (1 hit)
  343.     perlfaq5.pod    (1 hit)
  344.     perlhist.pod    (1 hit)
  345.     perlref.pod        (1 hit)
  346.     perltoc.pod        (1 hit)
  347.     perltrap.pod    (1 hit)
  348.   Proceed to open perlfunc.pod? [y] n
  349.   Do you want to speak perl interactively? [y] n
  350.   Should I dial 911? [y] n
  351.   Do you need psychiatric help? [y] y
  352.   <PELIZA> Hi, what bothers you today?
  353.            A Python programmer in the next cubby is driving me nuts!
  354.   <PELIZA> Hmm, thats fixable.  Just [rest censored]
  355.  
  356. =head2 Separate function manpages by default
  357.  
  358. Perl should install 'manpages' for every function/operator into the
  359. 3pl or 3p manual section.  By default.  The splitman program in the
  360. Perl source distribution does the work of turning big perlfunc into
  361. little 3p pages.
  362.  
  363. =head2 Users can't find the manpages
  364.  
  365. Make C<perldoc> tell users what they need to add to their .login or
  366. .cshrc to set their MANPATH correctly.
  367.  
  368. =head2 Install ALL Documentation
  369.  
  370. Make the standard documentation kit include the VMS, OS/2, Win32,
  371. Threads, etc information.  installperl and pod/Makefile should know
  372. enough to copy README.foo to perlfoo.pod before building everything,
  373. when appropriate.
  374.  
  375. =head2 Outstanding issues to be documented
  376.  
  377. Tom has a list of 5.005_5* features or changes that require
  378. documentation.
  379.  
  380. Create one document that coherently explains the delta between the
  381. last camel release and the current release.  perldelta was supposed
  382. to be that, but no longer.  The things in perldelta never seemed to
  383. get placed in the right places in the real manpages, either.  This
  384. needs work.
  385.  
  386. =head2 Adapt www.linuxhq.com for Perl
  387.  
  388. This should help glorify documentation and get more people involved in
  389. perl development.
  390.  
  391. =head2 Replace man with a perl program
  392.  
  393. Can we reimplement man in Perl?  Tom has a start.  I believe some of
  394. the Linux systems distribute a manalike.  Alternatively, build on
  395. perldoc to remove the unfeatures like "is slow" and "has no apropos".
  396.  
  397. =head2 Unicode tutorial
  398.  
  399. We could use more work on helping people understand Perl's new
  400. Unicode support that Larry has created.
  401.  
  402. =head1 Modules
  403.  
  404. =head2 Update the POSIX extension to conform with the POSIX 1003.1 Edition 2
  405.  
  406. The current state of the POSIX extension is as of Edition 1, 1991,
  407. whereas the Edition 2 came out in 1996.  ISO/IEC 9945:1-1996(E),
  408. ANSI/IEEE Std 1003.1, 1996 Edition. ISBN 1-55937-573-6.  The updates
  409. were legion: threads, IPC, and real time extensions.
  410.  
  411. =head2 Module versions
  412.  
  413. Automate the checking of versions in the standard distribution so
  414. it's easy for a pumpking to check whether CPAN has a newer version
  415. that we should be including?
  416.  
  417. =head2 New modules
  418.  
  419. Which modules should be added to the standard distribution?  This ties
  420. in with the SDK discussed on the perl-sdk list at perl.org.
  421.  
  422. =head2 Profiler
  423.  
  424. Make the profiler (Devel::DProf) part of the standard release, and
  425. document it well.
  426.  
  427. =head2 Tie Modules
  428.  
  429. =over 4
  430.  
  431. =item VecArray
  432.  
  433. Implement array using vec().  Nathan Torkington has working code to
  434. do this.
  435.  
  436. =item SubstrArray
  437.  
  438. Implement array using substr()
  439.  
  440. =item VirtualArray
  441.  
  442. Implement array using a file
  443.  
  444. =item ShiftSplice
  445.  
  446. Defines shift et al in terms of splice method
  447.  
  448. =back
  449.  
  450. =head2 Procedural options
  451.  
  452. Support procedural interfaces for the common cases of Perl's
  453. gratuitously OOO modules.  Tom objects to "use IO::File" reading many
  454. thousands of lines of code.
  455.  
  456. =head2 RPC
  457.  
  458. Write a module for transparent, portable remote procedure calls.  (Not
  459. core).  This touches on the CORBA and ILU work.
  460.  
  461. =head2 y2k localtime/gmtime
  462.  
  463. Write a module, Y2k::Catch, which overloads localtime and gmtime's
  464. returned year value and catches "bad" attempts to use it.
  465.  
  466. =head2 Export File::Find variables
  467.  
  468. Make File::Find export C<$name> etc manually, at least if asked to.
  469.  
  470. =head2 Ioctl
  471.  
  472. Finish a proper Ioctl module.
  473.  
  474. =head2 Debugger attach/detach
  475.  
  476. Permit a user to debug an already-running program.
  477.  
  478. =head2 Regular Expression debugger
  479.  
  480. Create a visual profiler/debugger tool that stepped you through the
  481. execution of a regular expression point by point.  Ilya has a module
  482. to color-code and display regular expression parses and executions.
  483. There's something at http://tkworld.org/ that might be a good start,
  484. it's a Tk/Tcl RE wizard, that builds regexen of many flavours.
  485.  
  486. =head2 Alternative RE Syntax
  487.  
  488. Make an alternative regular expression syntax that is accessed through
  489. a module.  For instance,
  490.  
  491.   use RE;
  492.   $re = start_of_line()
  493.       ->literal("1998/10/08")
  494.       ->optional( whitespace() )
  495.       ->literal("[")
  496.       ->remember( many( or( "-", digit() ) ) );
  497.  
  498.   if (/$re/) {
  499.     print "time is $1\n";
  500.   }
  501.  
  502. Newbies to regular expressions typically only use a subset of the full
  503. language.  Perhaps you wouldn't have to implement the full feature set.
  504.  
  505. =head2 Bundled modules
  506.  
  507. Nicholas Clark (nick@flirble.org) had a patch for storing modules in
  508. zipped format.  This needs exploring and concluding.
  509.  
  510. =head2 Expect
  511.  
  512. Adopt IO::Tty, make it as portable as Don Libes' "expect" (can we link
  513. against expect code?), and perfect a Perl version of expect.  IO::Tty
  514. and expect could then be distributed as part of the core distribution,
  515. replacing Comm.pl and other hacks.
  516.  
  517. =head2 GUI::Native
  518.  
  519. A simple-to-use interface to native graphical abilities would
  520. be welcomed.  Oh, Perl's access Tk is nice enough, and reasonably
  521. portable, but it's not particularly as fast as one would like.
  522. Simple access to the mouse's cut buffer or mouse-presses shouldn't
  523. required loading a few terabytes of Tk code.
  524.  
  525. =head2 Update semibroken auxiliary tools; h2ph, a2p, etc.
  526.  
  527. Kurt Starsinic is working on h2ph.  mjd has fixed bugs in a2p in the
  528. past.  a2p apparently doesn't work on nawk and gawk extensions.
  529. Graham Barr has an Include module that does h2ph work at runtime.
  530.  
  531. =head2 pod2html
  532.  
  533. A short-term fix: pod2html generates absolute HTML links.  Make it
  534. generate relative links.
  535.  
  536. =head2 Podchecker
  537.  
  538. Something like lint for Pod would be good.  Something that catches
  539. common errors as well as gross ones.  Brad Appleton is putting
  540. together something as part of his PodParser work.
  541.  
  542. =head1 Tom's Wishes
  543.  
  544. =head2 Webperl
  545.  
  546. Design a webperl environment that's as tightly integrated and as
  547. easy-to-use as Perl's current command-line environment.
  548.  
  549. =head2 Mobile agents
  550.  
  551. More work on a safe and secure execution environment for mobile
  552. agents would be neat; the Safe.pm module is a start, but there's a
  553. still a lot to be done in that area.  Adopt Penguin?
  554.  
  555. =head2 POSIX on non-POSIX
  556.  
  557. Standard programming constructs for non-POSIX systems would help a
  558. lot of programmers stuck on primitive, legacy systems.  For example,
  559. Microsoft still hasn't made a usable POSIX interface on their clunky
  560. systems, which means that standard operations such as alarm() and
  561. fork(), both critical for sophisticated client-server programming,
  562. must both be kludged around.
  563.  
  564. I'm unsure whether Tom means to emulate alarm( )and fork(), or merely
  565. to provide a document like perlport.pod to say which features are
  566. portable and which are not.
  567.  
  568. =head2 Portable installations
  569.  
  570. Figure out a portable semi-gelled installation, that is, one without
  571. full paths.  Larry has said that he's thinking about this.  Ilya
  572. pointed out that perllib_mangle() is good for this.
  573.  
  574. =head1 Win32 Stuff
  575.  
  576. =head2 Rename new headers to be consistent with the rest
  577.  
  578. =head2 Work out DLL versioning
  579.  
  580. =head2 Style-check
  581.  
  582. =head1 Would be nice to have
  583.  
  584. =over 4
  585.  
  586. =item C<pack "(stuff)*">
  587.  
  588. =item Contiguous bitfields in pack/unpack
  589.  
  590. =item lexperl
  591.  
  592. =item Bundled perl preprocessor
  593.  
  594. =item Use posix calls internally where possible
  595.  
  596. =item format BOTTOM
  597.  
  598. =item -i rename file only when successfully changed
  599.  
  600. =item All ARGV input should act like <>
  601.  
  602. =item report HANDLE [formats].
  603.  
  604. =item support in perlmain to rerun debugger
  605.  
  606. =item lvalue functions
  607.  
  608. Tuomas Lukka, on behalf of the PDL project, greatly desires this and
  609. Ilya has a patch for it (probably against an older version of Perl).
  610. Tuomas points out that what PDL really wants is lvalue I<methods>,
  611. not just subs.
  612.  
  613. =back
  614.  
  615. =head1 Possible pragmas
  616.  
  617. =head2 'less'
  618.  
  619. (use less memory, CPU)
  620.  
  621. =head1 Optimizations
  622.  
  623. =head2 constant function cache
  624.  
  625. =head2 foreach(reverse...)
  626.  
  627. =head2 Cache eval tree
  628.  
  629. Unless lexical outer scope used (mark in &compiling?).
  630.  
  631. =head2 rcatmaybe
  632.  
  633. =head2 Shrink opcode tables
  634.  
  635. Via multiple implementations selected in peep.
  636.  
  637. =head2 Cache hash value
  638.  
  639. Not a win, according to Guido.
  640.  
  641. =head2 Optimize away @_ where possible
  642.  
  643. =head2 Optimize sort by { $a <=> $b }
  644.  
  645. Greg Bacon added several more sort optimizations.  These have
  646. made it into 5.005_55, thanks to Hans Mulder.
  647.  
  648. =head2 Rewrite regexp parser for better integrated optimization
  649.  
  650. The regexp parser was rewritten for 5.005.  Ilya's the regexp guru.
  651.  
  652. =head1 Vague possibilities
  653.  
  654. =over 4
  655.  
  656. =item ref function in list context
  657.  
  658. This seems impossible to do without substantially breaking code.
  659.  
  660. =item make tr/// return histogram in list context?
  661.  
  662. =item Loop control on do{} et al
  663.  
  664. =item Explicit switch statements
  665.  
  666. Nobody has yet managed to come up with a switch syntax that would
  667. allow for mixed hash, constant, regexp checks.  Submit implementation
  668. with syntax, please.
  669.  
  670. =item compile to real threaded code
  671.  
  672. =item structured types
  673.  
  674. =item Modifiable $1 et al
  675.  
  676. The intent is for this to be a means of editing the matched portions of
  677. the target string.
  678.  
  679. =back
  680.  
  681. =head1 To Do Or Not To Do
  682.  
  683. These are things that have been discussed in the past and roundly
  684. criticized for being of questionable value.
  685.  
  686. =head2 Making my() work on "package" variables
  687.  
  688. Being able to say my($Foo::Bar), something that sounds ludicrous and
  689. the 5.6 pumpking has mocked.
  690.  
  691. =head2 "or" testing defined not truth
  692.  
  693. We tell people that C<||> can be used to give a default value to a
  694. variable:
  695.  
  696.     $children = shift || 5;        # default is 5 children
  697.  
  698. which is almost (but not):
  699.  
  700.     $children = shift;
  701.     $children = 5 unless $children;
  702.  
  703. but if the first argument was given and is "0", then it will be
  704. considered false by C<||> and C<5> used instead.  Really we want
  705. an C<||>-like operator that behaves like:
  706.  
  707.     $children = shift;
  708.     $children = 5 unless defined $children;
  709.  
  710. Namely, a C<||> that tests defined-ness rather than truth.  One was
  711. discussed, and a patch submitted, but the objections were many.  While
  712. there were objections, many still feel the need.  At least it was
  713. decided that C<??> is the best name for the operator.
  714.  
  715. =head2 "dynamic" lexicals
  716.  
  717.   my $x;
  718.   sub foo {
  719.     local $x;
  720.   }
  721.  
  722. Localizing, as Tim Bunce points out, is a separate concept from
  723. whether the variable is global or lexical.  Chip Salzenberg had
  724. an implementation once, but Larry thought it had potential to
  725. confuse.
  726.  
  727. =head2 "class"-based, rather than package-based "lexicals"
  728.  
  729. This is like what the Alias module provides, but the variables would
  730. be lexicals reserved by perl at compile-time, which really are indices
  731. pointing into the pseudo-hash object visible inside every method so
  732. declared.
  733.  
  734. =head1 Threading
  735.  
  736. =head2 Modules
  737.  
  738. Which of the standard modules are thread-safe?  Which CPAN modules?
  739. How easy is it to fix those non-safe modules?
  740.  
  741. =head2 Testing
  742.  
  743. Threading is still experimental.  Every reproducible bug identifies
  744. something else for us to fix.  Find and submit more of these problems.
  745.  
  746. =head2 $AUTOLOAD
  747.  
  748. =head2 exit/die
  749.  
  750. Consistent semantics for exit/die in threads.
  751.  
  752. =head2 External threads
  753.  
  754. Better support for externally created threads.
  755.  
  756. =head2 Thread::Pool
  757.  
  758. =head2 thread-safety
  759.  
  760. Spot-check globals like statcache and global GVs for thread-safety.
  761. "B<Part done>", says Sarathy.
  762.  
  763. =head2 Per-thread GVs
  764.  
  765. According to Sarathy, this would make @_ be the same in threaded
  766. and non-threaded, as well as helping solve problems like filehandles
  767. (the same filehandle currently cannot be used in two threads).
  768.  
  769. =head1 Compiler
  770.  
  771. =head2 Optimization
  772.  
  773. The compiler's back-end code-generators for creating bytecode or
  774. compilable C code could use optimization work.
  775.  
  776. =head2 Byteperl
  777.  
  778. Figure out how and where byteperl will be built for the various
  779. platforms.
  780.  
  781. =head2 Precompiled modules
  782.  
  783. Save byte-compiled modules on disk.
  784.  
  785. =head2 Executables
  786.  
  787. Auto-produce executable.
  788.  
  789. =head2 Typed lexicals
  790.  
  791. Typed lexicals should affect B::CC::load_pad.
  792.  
  793. =head2 Win32
  794.  
  795. Workarounds to help Win32 dynamic loading.
  796.  
  797. =head2 END blocks
  798.  
  799. END blocks need saving in compiled output, now that CHECK blocks
  800. are available.
  801.  
  802. =head2 _AUTOLOAD
  803.  
  804. _AUTOLOAD prodding.
  805.  
  806. =head2 comppadlist
  807.  
  808. Fix comppadlist (names in comppad_name can have fake SvCUR
  809. from where newASSIGNOP steals the field).
  810.  
  811. =head2 Cached compilation
  812.  
  813. Can we install modules as bytecode?
  814.  
  815. =head1 Recently Finished Tasks
  816.  
  817. =head2 Figure a way out of $^(capital letter)
  818.  
  819. Figure out a clean way to extend $^(capital letter) beyond
  820. the 26 alphabets.  (${^WORD} maybe?)
  821.  
  822. Mark-Jason Dominus sent a patch which went into 5.005_56.
  823.  
  824. =head2 Filenames
  825.  
  826. Keep filenames in the distribution and in the standard module set
  827. be 8.3 friendly where feasible.  Good luck changing the standard
  828. modules, though.
  829.  
  830. =head2 Foreign lines
  831.  
  832. Perl should be more generous in accepting foreign line terminations.
  833. Mostly B<done> in 5.005.
  834.  
  835. =head2 Namespace cleanup
  836.  
  837.     symbol-space: "pl_" prefix for all global vars
  838.                   "Perl_" prefix for all functions
  839.  
  840.     CPP-space:      stop malloc()/free() pollution unless asked
  841.  
  842. =head2 ISA.pm
  843.  
  844. Rename and alter ISA.pm.  B<Done>.  It is now base.pm.
  845.  
  846. =head2 gettimeofday
  847.  
  848. See Time::HiRes.
  849.  
  850. =head2 autocroak?
  851.  
  852. This is the Fatal.pm module, so any builtin that does
  853. not return success automatically die()s.  If you're feeling brave, tie
  854. this in with the unified exceptions scheme.
  855.  
  856. =cut
  857.